// UVa540 Team Queue
// 陈锋
#include <bits/stdc++.h>
using namespace std;

const int maxt = 1000 + 4;
typedef queue<int> IntQ;
char cmd[16];
int main() {
  for (int t, kase = 1; scanf("%d", &t) == 1 && t; kase++) {
    printf("Scenario #%d\n", kase);
    map<int, int> team; // team[x]表示编号为x的人所在的团队编号
    for (int i = 0, n, x; i < t; i++) {
      scanf("%d", &n);
      while (n--) scanf("%d", &x), team[x] = i;
    }

    IntQ tq, qs[maxt]; // tq是团队的队列，而qs[i]是团队i成员的队列
    for (int x; scanf("%s", cmd) == 1 && cmd[0] != 'S'; ) {
      if (cmd[0] == 'D') {
        IntQ &q = qs[tq.front()];
        printf("%d\n", q.front()), q.pop();
        if (q.empty()) tq.pop(); // 团体t全体出队列
      }
      else if (cmd[0] == 'E') {
        scanf("%d", &x);
        IntQ &q = qs[team[x]];
        if (q.empty()) tq.push(team[x]); // 团队t进入队列
        q.push(x);
      }
    }
    puts("");
  }
  return 0;
}
/*
算法分析请参考: 《入门经典-第2版》例题5-6
注意队列的出队操作是由front()获取队头元素以及pop()组成。
*/
// 24456120 540 Team Queue  Accepted  C++11 0.030 2020-01-22 11:17:19